#include<iostream>
#include<cstdlib>

int main()
{
    // int *a=(int *)malloc(sizeof(int));
    // if(a==nullptr)
    // return -1;

    // *a=10;
    // std::cout<<*a<<std::endl;
    // free(a);

    //堆上空间的申请：new
    //1、不需要计算所需的空间大小
    //2、不需要对返回指针进行强转
    //3、不需要对指针判空，如果申请失败，new会抛出异常终止程序
    // int *a= new int;  //在堆上申请一个新的空间
    // *a= 10;
    // delete a;

    // int *a= new int[10]; //申请数组
    // for(int i=0;i<10;i++)
    // {
    //     a[i]=i+1;
    // }

    // for(int i=0;i<10;i++)
    // {
    //     std::cout<<a[i]<<" ";
    // }
    //     std::cout<<std::endl;
    // delete []a;  //释放数组

    // int **a= new int*[2];
    // for(int i=0; i<2; i++)
    // {
    //     a[i]=new int[2];
    // }

    // for(int i=0; i<3; i++)
    // {
    //     a[i]=new int[3];
    // }

    // for(int i=0; i<2; i++)
    // {
    //     for(int j=0; j<3; j++)
    //     {
    //         a[i][j]=i*3+j;
    //     }
    // }

    // for(int i=0; i<2; i++)
    // {
    //     for(int j=0; j<3; j++)
    //     {
    //         std::cout<<a[i][j]<<" ";
    //     }
    //     std::cout<<std::endl;
    // }

    // for(int i=0; i<2; i++)
    // {
    //     delete []a[i];
    // }
    // delete []a;

    
    return 0;
}